package com.atguigu.gmall.product.controller;

import com.atguigu.gmall.model.product.BaseCategoryView;
import com.atguigu.gmall.model.product.BaseTrademark;
import com.atguigu.gmall.model.product.SkuInfo;
import com.atguigu.gmall.model.product.SpuSaleAttr;
import com.atguigu.gmall.product.service.ManageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @author: 李旭
 * @create: 2021-07-07 15:42
 *
 *   商品微服务 对外暴露接口的类
 *
 **/
@RestController
@RequestMapping("/api/product/")
public class ProductApiController {


    @Autowired
    private ManageService manageService;

    //1：查询SkuInfo 根据skuId
    @GetMapping("/inner/getSkuInfo/{skuId}")
    public SkuInfo getSkuInfo(@PathVariable Long skuId){
        //查询DB数据库  查询SkuInfo  再查询SkuImageList
        return manageService.getSkuInfo(skuId);
    }
    //2：查询 分类视图  条件：三级分类的ID
    @GetMapping("/inner/getBaseCagegoryView/{category3Id}")
    public BaseCategoryView getBaseCagegoryView(@PathVariable Long category3Id){
        return manageService.getBaseCagegoryView(category3Id);

    }
    //3:单独查询价格  注意事项：不可以优化 不可以放入缓存  BigDecimal: 钱方面的
    @GetMapping("/inner/getPrice/{skuId}")
    public BigDecimal getPrice(@PathVariable Long skuId){
        return manageService.getPrice(skuId);
    }

    //4：根据spuId,skuId 查询销售属性及属性值  集合  销售属性及值的红边框  SQL
    @GetMapping("/inner/getSpuSaleAttrAndValue/{spuId}/{skuId}")
    public List<SpuSaleAttr> getSpuSaleAttrAndValue(
            @PathVariable Long spuId,
            @PathVariable Long skuId
    ){
        return manageService.getSpuSaleAttrAndValue(spuId,skuId);

    }
    //5:组合数据   返回值 Map  没有可使用的对象的时候 使用Map  无敌版对象  万能对象
    @GetMapping("/inner/getSaleAttrValuesBySpu/{spuId}")
    public Map getSaleAttrValuesBySpu(@PathVariable Long spuId){
        return manageService.getSaleAttrValuesBySpu(spuId);
    }
    //首页之所有需要一二三级分类  查询分类视图即可
    @GetMapping("/inner/getBaseCagegoryViewList")
    public List<BaseCategoryView> getBaseCagegoryViewList(){
        return  manageService.getBaseCagegoryViewList();
    }


    @GetMapping("/inner/getBaseTrademark/{tmId}")
    public BaseTrademark getBaseTrademark(@PathVariable Long tmId){
        return manageService.getBaseTrademark(tmId);
    }
    //根据skuId 查询base_attr_info（平台属性名） base_attr_value（平台属性值表）  sku_attr_value (关联表）
    @GetMapping("/inner/getSkuAttrValue/{skuId}")
    public List<Map> getSkuAttrValue(@PathVariable Long skuId){
        return manageService.getSkuAttrValue(skuId);
    }
}
